// 发送控制命令
function sendCommand(cmd) {
    fetch(`/modbus_send?command=${cmd}`)
        .then(response => response.text())
        .then(data => console.log("Command sent:", data));
}

// 读取所有硬件数据
function readAllData() {
    fetch(`/get_all_data`)
        .then(response => response.json())
        .then(data => {
            if (data.status === 'success') {
                // 处理返回的数据
                const dataMap = {};
                data.data.forEach(item => {
                    dataMap[item.key] = item.value;
                });
                
                // 更新仪表盘
                updateDashboard(
                    dataMap[301] || 'N/A', 
                    dataMap[302] || 'N/A'
                );
                
                // 更新其他显示
                document.getElementById('voltage').innerText = dataMap[101] || 'N/A';
                document.getElementById('speed').innerText = dataMap[103] || 'N/A';
                
                // 更新开关状态
                updateSwitchStatus(304, 'car-door', dataMap[304] || 0);
                updateSwitchStatus(102, 'steering-wheel', dataMap[102] || 0);
                updateSwitchStatus(104, 'seat', dataMap[104] || 0);
            }
        })
        .catch(error => console.error('Error:', error));
}

// 更新仪表盘
function updateDashboard(temp, humidity) {
    document.getElementById('temp').innerText = temp + "°C";
    document.getElementById('humidity').innerText = humidity + "%";
    drawGauge('temp-gauge', temp, 0, 100);
    drawGauge('humidity-gauge', humidity, 0, 100);
}

// 更新开关状态显示
function updateSwitchStatus(key, elementId, status) {
    const element = document.getElementById(elementId);
    if (element) {
        element.classList.toggle('active', status === 1);
        element.setAttribute('data-status', status);
    }
}

// 初始化开关事件
function initSwitchEvents() {
    document.querySelectorAll('.control-switch').forEach(switchEl => {
        switchEl.addEventListener('click', function() {
            const key = this.getAttribute('data-key');
            const currentStatus = parseInt(this.getAttribute('data-status'));
            const newStatus = currentStatus === 1 ? 0 : 1;
            
            // 发送控制命令
            sendCommand(`set,${key},${newStatus}`);
            
            // 立即更新UI状态
            this.classList.toggle('active', newStatus === 1);
            this.setAttribute('data-status', newStatus);
        });
    });
}

// 页面加载完成后初始化
document.addEventListener('DOMContentLoaded', function() {
    initSwitchEvents();
    // 首次加载数据
    readAllData();
    // 设置定时读取数据
    setInterval(readAllData, 2000); // 每2秒更新一次
});